LEADTOOLS Barcode (Leadtools.Barcode assembly)
LEAD Technologies, Inc

ReadBarcode(RasterImage,LogicalRectangle,BarcodeSymbology[],BarcodeReadOptions[]) Method

Example 







A Leadtools.RasterImage object that contains the image data. Must not be null (Nothing in Visual Basic).
A Leadtools.Forms.LogicalRectangle that specifies the region of interest area in the image where the barcode search and detection is performed. You can specify LogicalRectangle.Empty to indicate that the search must be performed on the whole image.
An array of BarcodeSymbology enumeration members that specifies the barcode symbologies (types) to search for.
An array of BarcodeReadOptions that specifies the options to use. This can be null (Nothing in Visual Basic), where the current default options is used. Otherwise, the method will use the option that corresponds to the symbologies being read, if the array does not contain specific options for a symbologies being read, then the default version will be used.
Read one barcode from an image with a symbology from a specified group and options. .NET support Silverlight support
Syntax
'Declaration
 
Public Overloads Function ReadBarcode( _
   ByVal image As RasterImage, _
   ByVal searchBounds As LogicalRectangle, _
   ByVal symbologies() As BarcodeSymbology, _
   ByVal options() As BarcodeReadOptions _
) As BarcodeData
'Usage
 
Dim instance As BarcodeReader
Dim image As RasterImage
Dim searchBounds As LogicalRectangle
Dim symbologies() As BarcodeSymbology
Dim options() As BarcodeReadOptions
Dim value As BarcodeData
 
value = instance.ReadBarcode(image, searchBounds, symbologies, options)
ObjectiveC Syntax
 function Leadtools.Barcode.BarcodeReader.ReadBarcode(RasterImage,LogicalRectangle,BarcodeSymbology[],BarcodeReadOptions[])( 
   image ,
   searchBounds ,
   symbologies ,
   options 
)

Parameters

image
A Leadtools.RasterImage object that contains the image data. Must not be null (Nothing in Visual Basic).
searchBounds
A Leadtools.Forms.LogicalRectangle that specifies the region of interest area in the image where the barcode search and detection is performed. You can specify LogicalRectangle.Empty to indicate that the search must be performed on the whole image.
symbologies
An array of BarcodeSymbology enumeration members that specifies the barcode symbologies (types) to search for.
options
An array of BarcodeReadOptions that specifies the options to use. This can be null (Nothing in Visual Basic), where the current default options is used. Otherwise, the method will use the option that corresponds to the symbologies being read, if the array does not contain specific options for a symbologies being read, then the default version will be used.

Return Value

An instance of BarcodeData or one of its derived classes that contains the symbology, data, location and any rotation angle of the barcode found. If no barcodes can be found, then this method will return null (Nothing in Visual Basic).
Remarks

For more information on barcode reading, refer to BarcodeReader.

Use this method if you want to read a single barcode from a known group. For example, to read a barcode that can be of any UPC type, pass an array of BarcodeSymbology.UPCA and BarcodeSymbology.UPCE.

LEADTOOLS barcode read engine is optimized for speed and can search for multiple similar symbologies at the same time. This method simply returns the first barcode that is detected correctly using the symbologies and current options.

The ReadSymbology event will occur before and after attempting to read any symbology. The read options being used whether the default or specified will be set in the BarcodeReadSymbologyEventArgs.Options property of the event data.

If symbologies is null (Nothing in Visual Basic), then this method will use all the currently available symbologies. If this parameter contains an empty array, then no barcode will be detected and null (Nothing in Visual Basic) will be returned.

The BarcodeReader provides the following barcode read methods:

Method Description
ReadBarcode(RasterImage image, LogicalRectangle searchBounds, BarcodeSymbology symbology) and ReadBarcode(RasterImage image, LogicalRectangle searchBounds, BarcodeSymbology symbology, BarcodeReadOptions options)

Read one barcode from an image with specified symbology and default or specific options. Use these methods if you want to read a single barcode from the image, for example, a QR symbol by specifying BarcodeSymbology.QR or if you want to read any barcode found regardless of its type by using BarcodeSymbology.Unknown.

ReadBarcode(RasterImage image, LogicalRectangle searchBounds, BarcodeSymbology[] symbologies) and ReadBarcode(RasterImage image, LogicalRectangle searchBounds, BarcodeSymbology[] symbologies, BarcodeReadOptions[] options)

Read one barcode from an image with a symbology from a specified group and default or specific options. Use these methods if you want to read a single barcode from a known group. For example, to read a barcode that can be of any UPC type, pass an array of BarcodeSymbology.UPCA and BarcodeSymbology.UPCE.

ReadBarcodes(RasterImage image, LogicalRectangle searchBounds, int maximumBarcodes, BarcodeSymbology[] symbologies) and ReadBarcodes(RasterImage image, LogicalRectangle searchBounds, int maximumBarcodes, BarcodeSymbology[] symbologies, BarcodeReadOptions[] options)

Read multiple barcodes from an image with symbologies from a specified group and default or specific options. Use these methods if you want to read multiple barcodes of the same or multiple symbologies.

Example
Copy CodeCopy Code  
Public Sub BarcodeReader_ReadBarcodeExample4()
      Dim imageFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Barcode1.tif")

      ' Create a Barcode engine
      Dim engine As New BarcodeEngine()

      ' Get the Barcode reader instance
      Dim reader As BarcodeReader = engine.Reader

      Using codecs As New RasterCodecs()
         Using image As RasterImage = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1)
            ' Rotate the image by 90, so default option of reading horizonal barcodes will not work
            Console.WriteLine("Rotating the image by 90 degrees")
            Dim rotate As New RotateCommand(90 * 100, RotateCommandFlags.Resize, RasterColor.FromKnownColor(RasterKnownColor.White))
            rotate.Run(image)

            ' In the US, UPC barcodes are used to identity products. So, create an array of UPC symbologies
            Dim upcSymbologies() As BarcodeSymbology = _
            { _
               BarcodeSymbology.UPCA, _
               BarcodeSymbology.UPCE _
            }

            ' Read the first UPC barcode from the image using default options
            Console.WriteLine("Reading barcodes using default options")
            Dim barcode As BarcodeData = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, Nothing)

            ' Show its location and data if found
            ' This will print out "Not found"
            If Not IsNothing(barcode) Then
               Console.WriteLine("Found a {0} barcode at {1}, data:\n{2}", barcode.Symbology, barcode.Bounds, barcode.Value)
            Else
               Console.WriteLine("Not found")
            End If

            ' Now get the options we used previously, and change the 1D linear barcode read options
            ' to search for barcodes in both horizontal and vertical directions
            ' Note: Same options are used for UPCA and UPCE, so we only need one options class
            Dim oneDReadOptions As OneDBarcodeReadOptions = DirectCast(reader.GetDefaultOptions(BarcodeSymbology.UPCA), OneDBarcodeReadOptions)

            ' Change the read direction
            oneDReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical

            ' Try again using our options
            Console.WriteLine("Reading barcodes using our options")
            barcode = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, New BarcodeReadOptions() {oneDReadOptions})

            ' Show its location and data if found
            ' This will find the barcode and print its information now
            If Not IsNothing(barcode) Then
               Console.WriteLine("Found a {0} barcode at {1}, data:\n{2}", barcode.Symbology, barcode.Bounds, barcode.Value)
            Else
               Console.WriteLine("Not found")
            End If
         End Using
      End Using
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public void BarcodeReader_ReadBarcodeExample4()
   {
      string imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Barcode1.tif");

      // Create a Barcode engine
      BarcodeEngine engine = new BarcodeEngine();

      // Get the Barcode reader instance
      BarcodeReader reader = engine.Reader;

      using(RasterCodecs codecs = new RasterCodecs())
      {
         using(RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1))
         {
            // Rotate the image by 90, so default option of reading horizonal barcodes will not work
            Console.WriteLine("Rotating the image by 90 degrees");
            RotateCommand rotate = new RotateCommand(90 * 100, RotateCommandFlags.Resize, RasterColor.FromKnownColor(RasterKnownColor.White));
            rotate.Run(image);

            // In the US, UPC barcodes are used to identity products. So, create an array of UPC symbologies
            BarcodeSymbology[] upcSymbologies =
            {
               BarcodeSymbology.UPCA,
               BarcodeSymbology.UPCE
            };

            // Read the first UPC barcode from the image using default options
            Console.WriteLine("Reading barcodes using default options");
            BarcodeData barcode = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, null);

            // Show its location and data if found
            // This will print out "Not found"
            if(barcode != null)
            {
               Console.WriteLine("Found a {0} barcode at {1}, data:\n{2}", barcode.Symbology, barcode.Bounds, barcode.Value);
            }
            else
            {
               Console.WriteLine("Not found");
            }

            // Now get the options we used previously, and change the 1D linear barcode read options
            // to search for barcodes in both horizontal and vertical directions
            // Note: Same options are used for UPCA and UPCE, so we only need one options class
            OneDBarcodeReadOptions oneDReadOptions = reader.GetDefaultOptions(BarcodeSymbology.UPCA) as OneDBarcodeReadOptions;

            // Change the read direction
            oneDReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;

            // Try again using our options
            Console.WriteLine("Reading barcodes using our options");
            barcode = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, new BarcodeReadOptions[] { oneDReadOptions });

            // Show its location and data if found
            // This will find the barcode and print its information now
            if(barcode != null)
            {
               Console.WriteLine("Found a {0} barcode at {1}, data:\n{2}", barcode.Symbology, barcode.Bounds, barcode.Value);
            }
            else
            {
               Console.WriteLine("Not found");
            }
         }
      }
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
public void BarcodeReader_ReadBarcodeExample4(RasterImage image)
{
   // Create a Barcode engine
   BarcodeEngine engine = new BarcodeEngine();
   // Get the Barcode reader instance
   BarcodeReader reader = engine.Reader;

   RasterCodecs codecs = new RasterCodecs();

   // Rotate the image by 90, so default option of reading horizonal barcodes will not work
   Console.WriteLine("Rotating the image by 90 degrees");
   RotateCommand rotate = new RotateCommand(90 * 100, RotateCommandFlags.Resize, RasterColor.FromKnownColor(RasterKnownColor.White));
   rotate.Run(image);

   // In the US, UPC barcodes are used to identity products. So, create an array of UPC symbologies
   BarcodeSymbology[] upcSymbologies =
   {
      BarcodeSymbology.UPCA,
      BarcodeSymbology.UPCE
   };

   // Read the first UPC barcode from the image using default options
   Console.WriteLine("Reading barcodes using default options");
   BarcodeData barcode = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, null);

   // Show its location and data if found
   // This will print out "Not found"
   if(barcode != null)
   {
      Console.WriteLine("Found a {0} barcode at {1}, data:\n{2}", barcode.Symbology, barcode.Bounds, barcode.Value);
   }
   else
   {
      Console.WriteLine("Not found");
   }

   // Now get the options we used previously, and change the 1D linear barcode read options
   // to search for barcodes in both horizontal and vertical directions
   // Note: Same options are used for UPCA and UPCE, so we only need one options class
   OneDBarcodeReadOptions oneDReadOptions = reader.GetDefaultOptions(BarcodeSymbology.UPCA) as OneDBarcodeReadOptions;

   // Change the read direction
   oneDReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical;

   // Try again using our options
   Console.WriteLine("Reading barcodes using our options");
   barcode = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, new BarcodeReadOptions[] { oneDReadOptions });

   // Show its location and data if found
   // This will find the barcode and print its information now
   if(barcode != null)
   {
      Console.WriteLine("Found a {0} barcode at {1}, data:\n{2}", barcode.Symbology, barcode.Bounds, barcode.Value);
   }
   else
   {
      Console.WriteLine("Not found");
   }
}
Public Sub BarcodeReader_ReadBarcodeExample4(ByVal image As RasterImage)
   ' Create a Barcode engine
   Dim engine As BarcodeEngine = New BarcodeEngine()
   ' Get the Barcode reader instance
   Dim reader As BarcodeReader = engine.Reader

   Dim codecs As RasterCodecs = New RasterCodecs()

   ' Rotate the image by 90, so default option of reading horizonal barcodes will not work
   Console.WriteLine("Rotating the image by 90 degrees")
   Dim rotate As RotateCommand = New RotateCommand(90 * 100, RotateCommandFlags.Resize, RasterColor.FromKnownColor(RasterKnownColor.White))
   rotate.Run(image)

   ' In the US, UPC barcodes are used to identity products. So, create an array of UPC symbologies
   Dim upcSymbologies As BarcodeSymbology() = {BarcodeSymbology.UPCA, BarcodeSymbology.UPCE}

   ' Read the first UPC barcode from the image using default options
   Console.WriteLine("Reading barcodes using default options")
   Dim barcode As BarcodeData = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, Nothing)

   ' Show its location and data if found
   ' This will print out "Not found"
   If Not barcode Is Nothing Then
      Console.WriteLine("Found a {0} barcode at {1}, data:" & Constants.vbLf & "{2}", barcode.Symbology, barcode.Bounds, barcode.Value)
   Else
      Console.WriteLine("Not found")
   End If

   ' Now get the options we used previously, and change the 1D linear barcode read options
   ' to search for barcodes in both horizontal and vertical directions
   ' Note: Same options are used for UPCA and UPCE, so we only need one options class
   Dim oneDReadOptions As OneDBarcodeReadOptions = TryCast(reader.GetDefaultOptions(BarcodeSymbology.UPCA), OneDBarcodeReadOptions)

   ' Change the read direction
   oneDReadOptions.SearchDirection = BarcodeSearchDirection.HorizontalAndVertical

   ' Try again using our options
   Console.WriteLine("Reading barcodes using our options")
   barcode = reader.ReadBarcode(image, LogicalRectangle.Empty, upcSymbologies, New BarcodeReadOptions() {oneDReadOptions})

   ' Show its location and data if found
   ' This will find the barcode and print its information now
   If Not barcode Is Nothing Then
      Console.WriteLine("Found a {0} barcode at {1}, data:" & Constants.vbLf & "{2}", barcode.Symbology, barcode.Bounds, barcode.Value)
   Else
      Console.WriteLine("Not found")
   End If
End Sub
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

BarcodeReader Class
BarcodeReader Members
Overload List
ReadBarcode(RasterImage image, LogicalRectangle searchBounds, BarcodeSymbology symbology)
ReadBarcode(RasterImage image, LogicalRectangle searchBounds, BarcodeSymbology symbology, BarcodeReadOptions options)
ReadBarcode(RasterImage image, LogicalRectangle searchBounds, BarcodeSymbology[] symbologies)
ReadBarcodes(RasterImage image, LogicalRectangle searchBounds, int maximumBarcodes, BarcodeSymbology[] symbologies)
ReadBarcodes(RasterImage image, LogicalRectangle searchBounds, int maximumBarcodes, BarcodeSymbology[] symbologies, BarcodeReadOptions[] options)
Programming with LEADTOOLS Barcode
Supported Barcode Symbologies
Unlocking Barcode Support
Reading Barcodes Tutorial

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

Leadtools.Barcode requires a Barcode Module license and unlock key. For more information, refer to: LEADTOOLS Toolkit Features